package com.maiko.maikoaiagent.rag;

import org.springframework.ai.document.Document;
import org.springframework.ai.transformer.splitter.TokenTextSplitter;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 文档分割工具类
 * 该类提供了将文档列表分割成更小文档片段的功能
 * @author: Maiko7
 * @create: 2025-06-16 8:19
 */
@Component
class MyTokenTextSplitter {

    /**
     * 分割文档列表
     * 使用默认配置的TokenTextSplitter进行文档分割
     *
     * @param documents 待分割的文档列表
     * @return 分割后的文档列表
     */
    public List<Document> splitDocuments(List<Document> documents) {
        // 创建一个默认配置的TokenTextSplitter实例
        TokenTextSplitter splitter = new TokenTextSplitter();
        // 使用splitter处理文档列表并返回结果
        return splitter.apply(documents);
    }

    /**
     * 自定义分割文档列表
     * 使用自定义配置的TokenTextSplitter进行文档分割
     * 该方法定义了每个文档片段的最大长度为200个标记，最小长度为100个标记，
     * 缓冲区大小为10个标记，最大文档长度为5000个标记，并且保留完整的单词和句子
     *
     * @param documents 待分割的文档列表
     * @return 分割后的文档列表
     */
    public List<Document> splitCustomized(List<Document> documents) {
        // 创建一个自定义配置的TokenTextSplitter实例
        TokenTextSplitter splitter = new TokenTextSplitter(200, 100, 10, 5000, true);
        // 使用splitter处理文档列表并返回结果
        return splitter.apply(documents);
    }
}


